{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-09-11T08:38:43.361934Z",
     "start_time": "2025-09-11T08:38:42.734872Z"
    }
   },
   "source": [
    "import pandas as pd\n",
    "path = 'D:/2506A/monty03/day14/file/'"
   ],
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 筛选",
   "id": "af41f7259532de43"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 文本筛选",
   "id": "2d93898d5194138"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-11T08:51:32.901102Z",
     "start_time": "2025-09-11T08:51:32.880313Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df = pd.read_excel(path + '查询.xlsx')\n",
    "# 找出姓刘的\n",
    "print(df[df['姓名'].str.startswith('刘')])\n",
    "\n",
    "# endswith()结尾匹配 #\n",
    "print(df[df['地址'].str.endswith('A座')])\n"
   ],
   "id": "752dd1b34aca06d7",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分              地址\n",
      "3   4  刘千琪  女 2004-04-19  48  44  98  190  北京市丰台区恒大家园小区c座\n",
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分            地址\n",
      "0   1  谭鑫宇  女 2002-07-08  80  33  89  202  上海市虹桥区长城小区A座\n"
     ]
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-11T08:56:12.781183Z",
     "start_time": "2025-09-11T08:56:12.774326Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# contains() 包含\n",
    "# print(df[df['地址'].str.contains('A座',case=False)]) # 这里case=False是忽略大小写\n",
    "\n",
    "# 匹配正则表达式\n",
    "print(df[df['地址'].str.contains('[a-c]座',case=False)])"
   ],
   "id": "a18552c9d1d0bde3",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分              地址\n",
      "0   1  谭鑫宇  女 2002-07-08  80  33  89  202    上海市虹桥区长城小区A座\n",
      "1   2  韩耀祖  男 2005-06-09  76  66  24  166   北京市海淀区太阳宫小区a座\n",
      "2   3  聂茹凤  女 2012-07-06  98  99  36  233  北京市房山区水墨林溪小区C座\n",
      "3   4  刘千琪  女 2004-04-19  48  44  98  190  北京市丰台区恒大家园小区c座\n",
      "4   5  崔龙腾  男 2010-07-05  96  68  78  242    邯郸市肥乡区龙腾家园B座\n"
     ]
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 筛选日期",
   "id": "b0898d1fc1cc0d8d"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-11T09:08:58.788118Z",
     "start_time": "2025-09-11T09:08:58.777342Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 筛选2004年出生的 dt是一个访问器，可以获取时间分量\n",
    "print(df.loc[df['出生日期'].dt.year == 2004])\n",
    "\n",
    "# 筛选2012年7月出生的\n",
    "print(df.loc[(df['出生日期'].dt.year == 2012) & (df['出生日期'].dt.month == 7)])\n",
    "\n",
    "# 筛选2005-2011年之间的\n",
    "print(df.loc[(df['出生日期'].dt.year.between(2005,2011))])"
   ],
   "id": "58b12a4368313a3e",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分              地址\n",
      "3   4  刘千琪  女 2004-04-19  48  44  98  190  北京市丰台区恒大家园小区c座\n",
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分              地址\n",
      "2   3  聂茹凤  女 2012-07-06  98  99  36  233  北京市房山区水墨林溪小区C座\n",
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分             地址\n",
      "1   2  韩耀祖  男 2005-06-09  76  66  24  166  北京市海淀区太阳宫小区a座\n",
      "4   5  崔龙腾  男 2010-07-05  96  68  78  242   邯郸市肥乡区龙腾家园B座\n"
     ]
    }
   ],
   "execution_count": 51
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-11T09:13:52.887693Z",
     "start_time": "2025-09-11T09:13:52.874223Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 获取2004年以后的数据\n",
    "print(df.loc[df['出生日期'].dt.year > 2004])\n",
    "\n",
    "# 获取2010年之前的数据\n",
    "print(df.loc[df['出生日期'].dt.year < 2010])\n",
    "\n",
    "\n",
    "# 获取指定时间区间  筛选2005-2011年之间的\n",
    "result = df.query(\n",
    "    '@df.出生日期.dt.year > 2005 and '\n",
    "    '@df.出生日期.dt.year < 2011'\n",
    ")\n",
    "print(result)"
   ],
   "id": "a3ec9abaaf49005f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分                 地址\n",
      "1   2  韩耀祖  男 2005-06-09  76  66  24  166      北京市海淀区太阳宫小区a座\n",
      "2   3  聂茹凤  女 2012-07-06  98  99  36  233     北京市房山区水墨林溪小区C座\n",
      "4   5  崔龙腾  男 2010-07-05  96  68  78  242       邯郸市肥乡区龙腾家园B座\n",
      "5   6  李欣桐  女 2014-12-21  77  75  45  197  呼和浩特市回族区第三小学家属院E座\n",
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分              地址\n",
      "0   1  谭鑫宇  女 2002-07-08  80  33  89  202    上海市虹桥区长城小区A座\n",
      "1   2  韩耀祖  男 2005-06-09  76  66  24  166   北京市海淀区太阳宫小区a座\n",
      "3   4  刘千琪  女 2004-04-19  48  44  98  190  北京市丰台区恒大家园小区c座\n",
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分            地址\n",
      "4   5  崔龙腾  男 2010-07-05  96  68  78  242  邯郸市肥乡区龙腾家园B座\n"
     ]
    }
   ],
   "execution_count": 57
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-11T09:24:00.912229Z",
     "start_time": "2025-09-11T09:24:00.896226Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 设置日期为索引\n",
    "df2 = df.set_index('出生日期').sort_index()\n",
    "# print(df2)\n",
    "\n",
    "# 筛选2004年出生的\n",
    "print(df2.loc['2004'])\n",
    "\n",
    "# 筛选2012年7月出生的\n",
    "print(df2.loc['2012-7'])\n",
    "\n",
    "\n",
    "# 筛选2005-2011年之间的\n",
    "print(df2.loc['2005':'2011'])\n",
    "\n",
    "print('=' * 30)\n",
    "\n",
    "# truncate方法 # 根据索引截断DataFrame或Serie\n",
    "# 获取2004年以后的数据\n",
    "print(df2.truncate(before='2004-01-01'))\n",
    "\n",
    "# 获取2010年之前的数据\n",
    "print(df2.truncate(after='2010-01-01'))\n",
    "\n",
    "\n",
    "\n",
    "# 获取指定时间区间  筛选2005-2011年之间的\n",
    "print(df2.truncate(before='2005-01-01',after='2011-12-31'))\n"
   ],
   "id": "2d96b2e633b72e7c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            序号   姓名 性别  理论  机试  品德   总分              地址\n",
      "出生日期                                                   \n",
      "2004-04-19   4  刘千琪  女  48  44  98  190  北京市丰台区恒大家园小区c座\n",
      "            序号   姓名 性别  理论  机试  品德   总分              地址\n",
      "出生日期                                                   \n",
      "2012-07-06   3  聂茹凤  女  98  99  36  233  北京市房山区水墨林溪小区C座\n",
      "            序号   姓名 性别  理论  机试  品德   总分             地址\n",
      "出生日期                                                  \n",
      "2005-06-09   2  韩耀祖  男  76  66  24  166  北京市海淀区太阳宫小区a座\n",
      "2010-07-05   5  崔龙腾  男  96  68  78  242   邯郸市肥乡区龙腾家园B座\n",
      "==============================\n",
      "            序号   姓名 性别  理论  机试  品德   总分                 地址\n",
      "出生日期                                                      \n",
      "2004-04-19   4  刘千琪  女  48  44  98  190     北京市丰台区恒大家园小区c座\n",
      "2005-06-09   2  韩耀祖  男  76  66  24  166      北京市海淀区太阳宫小区a座\n",
      "2010-07-05   5  崔龙腾  男  96  68  78  242       邯郸市肥乡区龙腾家园B座\n",
      "2012-07-06   3  聂茹凤  女  98  99  36  233     北京市房山区水墨林溪小区C座\n",
      "2014-12-21   6  李欣桐  女  77  75  45  197  呼和浩特市回族区第三小学家属院E座\n",
      "            序号   姓名 性别  理论  机试  品德   总分              地址\n",
      "出生日期                                                   \n",
      "2002-07-08   1  谭鑫宇  女  80  33  89  202    上海市虹桥区长城小区A座\n",
      "2004-04-19   4  刘千琪  女  48  44  98  190  北京市丰台区恒大家园小区c座\n",
      "2005-06-09   2  韩耀祖  男  76  66  24  166   北京市海淀区太阳宫小区a座\n",
      "            序号   姓名 性别  理论  机试  品德   总分             地址\n",
      "出生日期                                                  \n",
      "2005-06-09   2  韩耀祖  男  76  66  24  166  北京市海淀区太阳宫小区a座\n",
      "2010-07-05   5  崔龙腾  男  96  68  78  242   邯郸市肥乡区龙腾家园B座\n"
     ]
    }
   ],
   "execution_count": 77
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-11T09:27:12.846814Z",
     "start_time": "2025-09-11T09:27:12.841305Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 筛选出周末出生的人 周一是0，周日是6\n",
    "print(df[df['出生日期'].dt.dayofweek.isin([5,6])])"
   ],
   "id": "6e1bbc8ec79cb495",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   序号   姓名 性别       出生日期  理论  机试  品德   总分                 地址\n",
      "5   6  李欣桐  女 2014-12-21  77  75  45  197  呼和浩特市回族区第三小学家属院E座\n"
     ]
    }
   ],
   "execution_count": 86
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-11T09:30:55.978181Z",
     "start_time": "2025-09-11T09:30:55.969356Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 演示where\n",
    "print(df.where(df['理论'] > 80))"
   ],
   "id": "c9886ac4bf7c1b0",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    序号   姓名   性别       出生日期    理论    机试    品德     总分              地址\n",
      "0  NaN  NaN  NaN        NaT   NaN   NaN   NaN    NaN             NaN\n",
      "1  NaN  NaN  NaN        NaT   NaN   NaN   NaN    NaN             NaN\n",
      "2  3.0  聂茹凤    女 2012-07-06  98.0  99.0  36.0  233.0  北京市房山区水墨林溪小区C座\n",
      "3  NaN  NaN  NaN        NaT   NaN   NaN   NaN    NaN             NaN\n",
      "4  5.0  崔龙腾    男 2010-07-05  96.0  68.0  78.0  242.0    邯郸市肥乡区龙腾家园B座\n",
      "5  NaN  NaN  NaN        NaT   NaN   NaN   NaN    NaN             NaN\n"
     ]
    }
   ],
   "execution_count": 91
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
